Data Repositories
TL;DR:
Data リポジトリは署名されたデータのコレクションです。
Gitリポジトリに似ていますが、データベースレコードです。
ユーザは公開アクティビティ(活動)をリポジトリ(repos)に入れます。
「データ リポジトリ」は、1 人のユーザーによって公開されたデータのコレクションです。リポジトリは自己認証型のデータ構造です。つまり、各更新は署名されており、誰でも検証できます。
Data Layout
code:code
┌────────────────┐
│ Commit │ (Signed Root)
└───────┬────────┘
↓
┌────────────────┐
│ Tree Nodes │
└───────┬────────┘
↓
┌────────────────┐
│ Record │
└────────────────┘
このレイアウトは URL に反映されています。
code:code
Root | at://alice.com
Collection | at://alice.com/app.bsky.feed.post
Record | at://alice.com/app.bsky.feed.post/1234
データ リポジトリへの「コミット」は、ルート ノードの CID に対するキーペアの署名にすぎません。 リポジトリへの各変更は新しいコミット ノードが生成されます。
Identifier Types 識別子の種類
パーソナル データ リポジトリ内では、複数の種類の識別子が使用されます。
DIDs 分散型 ID (DIDs) は、データ リポジトリを識別します。 これらはユーザー ID として広く使用されていますが、すべてのユーザーが 1 つのデータ リポジトリを持っているため、DID はデータ リポジトリへの参照と見なすことができます。 DID の形式は、使用される「DID メソッド」によって異なりますが、すべての DID は最終的にキーペアとサービス プロバイダーのリストに解決されます。 このキーペアは、データ リポジトリへのコミットに署名したり、コミットに署名する UCAN キーペアを承認したりできます (「Permissioning(許可)」を参照)。 CIDs コンテンツ ID (CIDs) は、フィンガープリント ハッシュを使用してコンテンツを識別します。 これらは、リポジトリ内のオブジェクト (ノード) を参照するためにリポジトリ全体で使用されます。 リポジトリ内のノードが変更されると、その CID も変更されます。 ノードを参照する親は、参照を更新する必要があります。これにより、親の CID も変更されます。 これは Root ノードまで連鎖し、新しいコミットを生成するために署名されます。 NSIDs 名前空間識別子(Namespaced Identifiers) nsid は、リポジトリ内のレコードのグループのLexiconタイプを識別します。 rkey Record keys (rkeys)は、特定のリポジトリ内のコレクション内の個々のレコードを識別します。このフォーマットはコレクションLexiconによって定義されており、一部のコレクションには "self" などのキーを持つ1つのレコードのみが含まれますが、他のコレクションにはBase32でエンコードされたタイムスタンプを使用するキーを持つタイムスタンプ識別子(TID)と呼ばれる多くのレコードがあります。